import { IPSDataEntity } from '../ipsdata-entity';
import { IPSDEAction } from '../action/ipsdeaction';
import { IPSDEDataQuery } from '../ds/ipsdedata-query';
import { IPSDEDataSet } from '../ds/ipsdedata-set';
import { IPSDELogicNode } from './ipsdelogic-node';
import { IPSDELogicParam } from './ipsdelogic-param';

/**
 *
 * 继承父接口类型值[USER]
 * @export
 * @interface IPSDEUserLogic
 */
export interface IPSDEUserLogic extends IPSDELogicNode {
  /**
   * 目标实体行为对象
   *
   * @type {IPSDEAction}
   */
  getDstPSDEAction(): IPSDEAction | null;

  /**
   * 目标实体行为对象
   *
   * @type {IPSDEAction}
   */
  get dstPSDEAction(): IPSDEAction | null;

  /**
   * 目标实体行为对象（必须存在）
   *
   * @type {IPSDEAction}
   */
  getDstPSDEActionMust(): IPSDEAction;

  /**
   * 目标实体数据查询
   *
   * @type {IPSDEDataQuery}
   */
  getDstPSDEDataQuery(): IPSDEDataQuery | null;

  /**
   * 目标实体数据查询
   *
   * @type {IPSDEDataQuery}
   */
  get dstPSDEDataQuery(): IPSDEDataQuery | null;

  /**
   * 目标实体数据查询（必须存在）
   *
   * @type {IPSDEDataQuery}
   */
  getDstPSDEDataQueryMust(): IPSDEDataQuery;

  /**
   * 目标实体数据集对象
   *
   * @type {IPSDEDataSet}
   */
  getDstPSDEDataSet(): IPSDEDataSet | null;

  /**
   * 目标实体数据集对象
   *
   * @type {IPSDEDataSet}
   */
  get dstPSDEDataSet(): IPSDEDataSet | null;

  /**
   * 目标实体数据集对象（必须存在）
   *
   * @type {IPSDEDataSet}
   */
  getDstPSDEDataSetMust(): IPSDEDataSet;

  /**
   * 目标逻辑参数对象
   *
   * @type {IPSDELogicParam}
   */
  getDstPSDELogicParam(): IPSDELogicParam | null;

  /**
   * 目标逻辑参数对象
   *
   * @type {IPSDELogicParam}
   */
  get dstPSDELogicParam(): IPSDELogicParam | null;

  /**
   * 目标逻辑参数对象（必须存在）
   *
   * @type {IPSDELogicParam}
   */
  getDstPSDELogicParamMust(): IPSDELogicParam;

  /**
   * 目标实体对象
   *
   * @type {IPSDataEntity}
   */
  getDstPSDataEntity(): IPSDataEntity | null;

  /**
   * 目标实体对象
   *
   * @type {IPSDataEntity}
   */
  get dstPSDataEntity(): IPSDataEntity | null;

  /**
   * 目标实体对象（必须存在）
   *
   * @type {IPSDataEntity}
   */
  getDstPSDataEntityMust(): IPSDataEntity;

  /**
   * 逻辑参数1
   * @type {string}
   */
  param1: string;

  /**
   * 逻辑参数10
   * @type {number}
   */
  param10: number;

  /**
   * 逻辑参数11
   * @type {string}
   */
  param11: string;

  /**
   * 逻辑参数12
   * @type {string}
   */
  param12: string;

  /**
   * 逻辑参数13
   * @type {string}
   */
  param13: string;

  /**
   * 逻辑参数14
   * @type {string}
   */
  param14: string;

  /**
   * 逻辑参数2
   * @type {string}
   */
  param2: string;

  /**
   * 逻辑参数3
   * @type {string}
   */
  param3: string;

  /**
   * 逻辑参数4
   * @type {string}
   */
  param4: string;

  /**
   * 逻辑参数5
   * @type {string}
   */
  param5: string;

  /**
   * 逻辑参数6
   * @type {string}
   */
  param6: string;

  /**
   * 逻辑参数7
   * @type {number}
   */
  param7: number;

  /**
   * 逻辑参数8
   * @type {number}
   */
  param8: number;

  /**
   * 逻辑参数9
   * @type {number}
   */
  param9: number;

  /**
   * 返回值绑定逻辑参数对象
   *
   * @type {IPSDELogicParam}
   */
  getRetPSDELogicParam(): IPSDELogicParam | null;

  /**
   * 返回值绑定逻辑参数对象
   *
   * @type {IPSDELogicParam}
   */
  get retPSDELogicParam(): IPSDELogicParam | null;

  /**
   * 返回值绑定逻辑参数对象（必须存在）
   *
   * @type {IPSDELogicParam}
   */
  getRetPSDELogicParamMust(): IPSDELogicParam;
}
